package com.mdd.admin.service;

import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.common.core.PageResult;
import com.mdd.common.validate.store.StoreCreateValidate;
import com.mdd.common.validate.store.StoreSearchValidate;
import com.mdd.common.validate.store.StoreStatusValidate;
import com.mdd.common.validate.store.StoreUpdateValidate;
import com.mdd.common.vo.store.AdminUserVo;
import com.mdd.common.vo.store.StoreDetailVo;
import com.mdd.common.vo.store.StoreListedVo;

/**
 * 门店服务接口类
 *
 * @author LikeAdmin
 */
public interface IStoreService {

    /**
     * 门店列表
     *
     * @param pageValidate   分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<StoreListedVo>
     * @author LikeAdmin
     */
    PageResult<StoreListedVo> list(PageValidate pageValidate, StoreSearchValidate searchValidate);

    /**
     * 门店详情
     *
     * @param id 主键ID
     * @return StoreDetailVo
     * @author LikeAdmin
     */
    StoreDetailVo detail(Integer id);

    /**
     * 门店新增
     *
     * @param createValidate 参数
     * @author LikeAdmin
     */
    void add(StoreCreateValidate createValidate);

    /**
     * 判断门店名称是否存在
     *
     * @param
     * @return
     */
    Boolean nameUnique(String storeName);

    Boolean nameUnique(String storeName, Integer storeId);

    Boolean codeUnique(String storeCode);

    /**
     * 门店编辑
     *
     * @param updateValidate 参数
     * @author LikeAdmin
     */
    void edit(StoreUpdateValidate updateValidate);

    /**
     * 门店删除
     *
     * @param id 主键ID
     * @author LikeAdmin
     */
    void del(Integer id);

    /**
     * 修改状态
     *
     * @param storeStatusValidate
     */
    void status(StoreStatusValidate storeStatusValidate);

    /**
     * 账号详情
     *
     * @param userId
     * @return
     */
    AdminUserVo getAdminDetail(Integer userId);
}
